#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(){
  //close(0);
  close(1);
  //int fd = open("./log.txt", O_WRONLY | O_CREAT | O_TRUNC , 0666);
  //int fd = open("./log.txt", O_RDONLY);
  int fd = open("./log.txt", O_WRONLY | O_CREAT | O_APPEND , 0666);
  if(fd < 0)
  {
    perror("open");
    return 1;
  }
  //char str1[64];
  //char str2[64];
  //char str3[64];
  //fscanf(stdin, "%s", str1);
  //fets(str2, sizeof(str2)-1, stdin);
  //memset(str3, '\0', sizeof(str3));
  //fread(str3, sizeof(str3)-1, 1, stdin);
  //printf("%s%s%s",str1, str2, str3);
  fprintf(stdout, "you can see me!\n");
  //const char* str = "hello stdout!\n";
  //fputs(str, stdout);
  //fwrite(str, strlen(str), 1, stdout);
  fflush(stdout);
  close(fd);
}

//int main(){
//  //printf("%d %d %d\n", stdin->_fileno, stdout->_fileno, stderr->_fileno);
//  //stdin -> 0
//  char buffer[64];
//  //fscanf(stdin,"%s", buffer); //'\n'不会被读取，会自动在末尾加'\0'
//  //printf("%s\n", buffer);
//  memset(buffer,'0',sizeof(buffer));
//  ssize_t s = read(0, buffer, sizeof(buffer)-1); //'\n'会被读取，不会自动在末尾加'\0'
//  buffer[s] = '\0';
//  printf("%s", buffer);
//
//  //stdout -> 1
//  const char* str1 = "stdout!\n";
//  const char* str2 = "stderr!\n";
//  //fprintf(stdout, str1);
//  write(1, str1, strlen(str1));
//  
//  //stderr -> 2
//  //fprintf(stderr, str2);
//  write(2, str2, strlen(str2));
//}

//int main(){
//  int fd1 = open("./myfile1", O_WRONLY | O_CREAT);
//  int fd2 = open("./myfile2", O_WRONLY | O_CREAT);
//  int fd3 = open("./myfile3", O_WRONLY | O_CREAT);
//  int fd4 = open("./myfile4", O_WRONLY | O_CREAT);
//
//  printf("open success! fd1:%d\n", fd1);
//  printf("open success! fd1:%d\n", fd2);
//  printf("open success! fd1:%d\n", fd3);
//  printf("open success! fd1:%d\n", fd4);
//  
//  close(fd1);
//  close(fd2);
//  close(fd3);
//  close(fd4);
//}

//int main(){
//  umask(0);
//  int fd = open("./myfile", O_RDONLY); //以只读模式打开文件
//  //int fd = open("./myfile", O_WRONLY | O_CREAT, 0666); //默认覆写
//  //int fd = open("./myfile", O_WRONLY | O_CREAT | O_TRUNC, 0666); //写前清空
//  //int fd = open("./myfile", O_WRONLY | O_CREAT | O_APPEND, 0666); //追加模式
//  if(fd == -1)
//  {
//    perror("open");
//    return 1;
//  }
//  printf("open success! file descriptor:%d\n", fd);
//  char buffer[64];
//  memset(buffer,'\0', sizeof(buffer));
//  read(fd, buffer, sizeof(buffer));
//  fprintf(stdout, "%s", buffer);
//  //char *str = "aaa\n";
//  //write(fd, str, strlen(str));
//  close(fd);
//  return 0;
//}








//enum FLAG{
//  ONE = 1,
//  TWO = 2,
//  THREE = 4
//};
//
//void show(int flag){
//  if(flag & 1) printf("task one!\n");
//  if(flag & 2) printf("task two!\n");
//  if(flag & 4) printf("task three!\n");
//}
//
//int main(){
//  show(ONE);
//  printf("----------------------\n");
//  show(ONE | TWO);
//  printf("----------------------\n");
//  show(ONE | TWO | THREE);
//}

//int main(int argc, char* argv[]){
//  //if(argc != 2)
//  //{
//  //  printf("argc error!\n");
//  //  return 1;
//  //}
//  //打开文件
//  FILE *fp = fopen("./myfile", "w");
//  //FILE *fp = fopen(argv[1], "r");
//  if(fp == NULL)
//  {
//    perror("fopen");
//    return 1;
//  }
//  //写入文件操作 
//  char *s1 = "hello fputs!\n";
//  fputs(s1, fp);
//  char *s2 = "hello fprintf!\n";
//  fprintf(fp, "%s", s2);
//  char *s3 = "hello fwrite!\n";
//  fwrite(s3, strlen(s3), 1, fp);
//  
//  //读取文件操作
//  //char buffer[64];
//  //while(fgets(buffer, sizeof(buffer), fp)) 
//  //{
//  //  fprintf(stderr, "%s", buffer);
//  //}
//  //关闭文件
//  fclose(fp);
//  return 0;
//}
